﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class EditPatientForm : Form
    {
        int patientID;
        public EditPatientForm(int id)
        {
            patientID = id;
            InitializeComponent();
            InitFields();
        }

        private void InitFields()
        {
            String connStr = "SELECT imie, nazwisko, PESEL, wiek, miasto, adres FROM pacjent WHERE id_pacjent = " + patientID + ";";
            System.Data.Odbc.OdbcDataReader m_ODBCResult = Control.getInstance().ExecuteQuery(connStr);

            if (m_ODBCResult.Read())
            {
                TB_Imie.Text = m_ODBCResult.GetString(0);
                TB_Nazwisko.Text = m_ODBCResult.GetString(1);
                TB_PESEL.Text = m_ODBCResult.GetInt64(2).ToString();
                TB_Wiek.Text = m_ODBCResult.GetInt32(3).ToString();
                TB_Miasto.Text = m_ODBCResult.GetString(4);
                TB_Adres.Text = m_ODBCResult.GetString(5);
            }
        }

        private void ZmienDane_Click(object sender, EventArgs e)
        {
            Control control = Control.getInstance();

            if (TB_Imie.TextLength == 0 || TB_Nazwisko.TextLength == 0 ||
                TB_Wiek.TextLength == 0 || TB_Miasto.TextLength == 0 ||
                TB_Adres.TextLength == 0)
            {
                MessageBox.Show("Proszę wypełnić wszystkie pola.", "Niewystarczające dane", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (control.IsDBConnectionOpen())
            {
                String connStr = "SELECT * FROM pacjent WHERE id_pacjent = " + patientID + ";";
                System.Data.Odbc.OdbcDataReader m_ODBCResult = control.ExecuteQuery(connStr);

                if (!m_ODBCResult.Read())
                {
                    MessageBox.Show("Pacjent o podanym numerze PESEL nie istnieje w bazie danych!", "Taki pacjent nie istnieje w bazie", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                connStr = "UPDATE pacjent SET " +
                          "imie = '" + DBConnection.MySqlEscape(TB_Imie.Text) + "', " +
                          "nazwisko = '" + DBConnection.MySqlEscape(TB_Nazwisko.Text) + "', " +
                          "wiek = " + DBConnection.MySqlEscape(TB_Wiek.Text) + ", " +
                          "miasto = '" + DBConnection.MySqlEscape(TB_Miasto.Text) + "', " +
                          "adres = '" + DBConnection.MySqlEscape(TB_Adres.Text) + "' WHERE id_pacjent = " + patientID + ";";

                int result = control.ExecuteStmt(connStr);
                MessageBox.Show("Pomyślnie wprowadzono dane do bazy.", "Wprowadzono dane", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Błąd w połączeniu do bazy danych. Spróbuj ponownie.", "Błąd bazy danych", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            this.Close();
        }

        private void OnFormClose(object sender, EventArgs e)
        {
            Control.getInstance().CloseWindow(this);
        }
    }
}
